package com.stargate.soft.transaction.personne;

import java.sql.SQLException;

import com.stargate.bd.ConnectionBD;
import com.stargate.bd.bean.Affectation;
import com.stargate.bd.bean.Badge;
import com.stargate.bd.dao.DAOCreator;
import com.stargate.bd.dao.factory.AffectationDAO;
import com.stargate.bd.dao.factory.BadgeDAO;
import com.stargate.exception.PlusieursBadgesActifsException;
import com.stargate.exception.TriggerErrorCode;
import com.stargate.io.LectureClavier;

public class AjouterBadgePersonne {

	private int idPersonne;
	private Badge badge;
	private Affectation affectation;
	
	public AjouterBadgePersonne() throws SQLException, PlusieursBadgesActifsException {
		ConnectionBD.setSerializable();
		init();
		ConnectionBD.commit();
	}

	private void init() throws SQLException, PlusieursBadgesActifsException {
		// saisie de l'ID personne
		idPersonne = LectureClavier.lireEntier("ID personne :");

		// saisie du badge
		badge = DAOCreator.createBadge();
		
		// insertion du badge en BD
		BadgeDAO badgeDAO = new BadgeDAO();
		badgeDAO.insert(badge);
		badge.setNumBadge(badgeDAO.getSeqNumBadge());

		// saisie des dates d'affectation du badge
		affectation = DAOCreator.createAffectation(idPersonne, badge.getNumBadge());

		// insertion de l'affectation en BD
		AffectationDAO affectationDAO = new AffectationDAO();
		try {
			affectationDAO.insert(affectation);
		} catch (SQLException e) {
			if (e.getErrorCode() == TriggerErrorCode.TRIGGER_1) {
				throw new PlusieursBadgesActifsException(e.getMessage());
			} else {
				throw e;
			}
		}
	}

	public int getIdPersonne() {
		return idPersonne;
	}

	public Badge getBadge() {
		return badge;
	}

	public Affectation getAffectation() {
		return affectation;
	}
	
}
